package com.yang.design.behavior.observe;

import java.util.ArrayList;
import java.util.List;

/**
 * 抽象主题（抽象被观察者）
 * 作用:1.状态维护 2.观察者维护 3.通知观察者
 * 注意:其中状态维护建议放在具体主题上，这样抽象主题更加通用
 */
public interface Subject {
    //1.状态维护，状态可以有多个,根据具体业务,建议维护在具体主题上
    //int state = 0;

    //2.观察者维护
    //<1> 存储对应所有观察者 ,也可以维护在具体到具体主题上
    List<Observer> observers = new ArrayList<>();
    //<2> 添加观察者
    void add(Observer observer);
    //<3> 删除观察者
    void del(Observer observer);

    //3.通知所有对应的观察者
    void notifyObservers(int state);
}
